package userfunctions.packets.banker;

import userfunctions.packets.Packet;

/**
 * Klasa sluzaca do powiadomienia serwera o checi modyfikacji, utworzenia lub usuniecia konta.
 * @author Kamil Woźnicki i Michał Krajewski
 */
public class PacketAccount extends Packet {
    /**
     * Id uzytkownika.
     */
    public String userId;
    
    /**
     * Numer konta uzytkownika.
     */
    public String accountNumber;
    
    /**
     * Typ konta.
     */
    public int type;
    
    /**
     * Okres kapitaliacji konta.
     */
    public int okresKapitalizacji;
    
    /**
     * Oprocentowanie konta.
     */
    public float oprocentowanie;
    
    private enum Mode {Create, Delete, Edit};
    private Mode mode;
    
    /**
     * Konstruktor wyrzkostywany przy tworzeniu konta.
     * @param accountNumber Numer nowego konta.
     * @param typ Typ nowego konta.
     */
    public PacketAccount(String accountNumber, int typ) {
        this.accountNumber = accountNumber;
        this.type = typ;
        
        mode = Mode.Create;
    }
    
    /**
     * Konstruktor uzywany przy usuwaniu konta.
     * @param accountNumber Numer konta do usuniecia.
     */
    public PacketAccount(String accountNumber) {
        this.accountNumber = accountNumber;
        
        mode = Mode.Delete;
    }
    
    /**
     * Konstruktor uzywany przy edycji danych konta.
     * @param accountNumber Numer konta.
     * @param oprocentowanie Oprocentowanie konta.
     * @param okresKapitalizacji Okres kapitalizacji konta.
     */
    public PacketAccount(String accountNumber, float oprocentowanie, int okresKapitalizacji) {
        this.accountNumber = accountNumber;
        this.oprocentowanie = oprocentowanie;
        this.okresKapitalizacji = okresKapitalizacji;
        
        mode = Mode.Edit;
    }
}
